home *** CD-ROM | disk | FTP | other *** search
-
- フロッピーディスクイメージファイルの基礎と応用
-
- →余談をいっぱい散りばめて
-
- 編集部:舩本昇竜
-
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-
-
- EX68で扱われる2HDディスクイメージファイルは、文字通り、2HDフロッピーデ
-
- ィスクの内容をまるごと抜き取り、1つのファイルにしたものです。
-
- と、論理的な説明はこれで十分なのですが、せっかくの機会なので、もう少し
-
- フロッピーについての低レベル(ハードウェアより)な点をおさえましょう。な
-
- お、ここでいうFDとは、特にことわりのない限り、X680x0で使用される5インチ
-
- 2HD(1.2MB)を指します。
-
-
-
- ○解析屋用語と実際用語の微妙な違い
-
- まず、素朴な疑問の回答にもなる事実ですが、FDは、表裏、2つのヘッド(読
-
- 書装置)を持ち、両面記録を行います。また、両面とも、「トラック」という単
-
- 位で77等分されています。つまり、1つのFDには「154のトラック」が存在
-
- することになります。
-
- →特殊な方法で、FDに155以上のトラックを作り、それをチェックする
- 「オーバートラック」というプロテクトが存在します(しました?)。
-
- ここで少し問題となるのが、このトラックの考え方といいますか、数え方。FD
-
- のトラックは、
-
- 片面77のトラックが2面ある:77×2
-
- のではなく、
-
- 両面(サイド0+サイド1)に77トラックがある:2×77
-
- となります(ちなみに「サイド0」はディスクの表をあらわし、「サイド1」は
-
- ディスクの裏をあらわします)。
-
- そもそも、FDのヘッドは表と裏の2つありますが、ヘッドを動かす軸は1つし
-
- かありません(ですから、サイド0/サイド1という考えでアクセスを行うのは
-
- 「損」なのです)。実際、FDを先頭から順番にアクセスするようプログラムを組
-
- むと、
-
- サイド0のトラック0 (0)
- サイド1のトラック0 (1)
- サイド0のトラック1 (2)
- サイド1のトラック1 (3)
- : :
- : :
- サイド0のトラック76 (152)
- サイド1のトラック76 (153)
-
- という順番でアクセスされます。この時、アクセス順に番号をふると、それぞれ
-
- のトラックには0から153の番号が付きます(便宜上、私はこの番号を「解析
-
- 屋用トラック」と呼んだりもしています。以後もことわりのない限りこちらを使
-
- 用します)。経験的に、普段(?)、この0~153という番号を良く使います
-
- が、プログラミングの際には、どうしても「サイド」に関するパラメータが必要
-
- となります。ですから、両者の関係はキチンと押さえておきましょう。
-
-
-
-
- ○さらにこまかく
-
- 結局のトコロ、2HDイメージファイルといわれる「まるまる読み込まれたFDの
-
- 内容」とは、FDのトラック0からトラック153まで、順番に読み込まれた内容
-
- を指します。
-
- さて、これらトラックは、さらに小さな「セクタ」と単位に分解することがで
-
- きます(実際には、さらに細かく分類することも出来ますが、基本的に、分解出
-
- 来きる最小単位が「セクタ」と考えていいでしょう)。
-
- →他に分解されるデータとして、ギャップ(GAP)、アドレスマーク(IDAM)
- やCRCなどがあります。
- カタめのFDのコピープロテクトの多くは、「読み込めても書き込めない」
- これらの情報を特殊な装置で書き込むことで実現されていました。
-
- 具体的には、トラックは、8つのセクタに分解されます。つまり、FDは、12
-
- 32(=154×8)のセクタで構成されています(トラックと同様に、セクタ番号0~
-
- 1231であらわすコトもあります)。また、1つのセクタは1024バイトで構成
-
- されているので、FDの容量は約1.2Mバイト(1261568バイト=1024×1232)となりま
-
- す。
-
- →例えば、DRIVE.XでFDを調べた時、
- A: 2HD(1MB) ユニット番号・・・・ 0
- 1セクタあたりのバイト数・・・・・・・・・・・・・・・・ 1024
- と表示されます。
-
-
-
-
- ○お互いの都合
-
- 疑問に思う人もいるとは思います。「なぜ、トラック>セクタと階層構造をと
-
- らなくてはならないのか?」。これは、「FD(ハードウェア)にとって都合のよ
-
- い分割方法がトラック」「ユーザー(ソフトウェア)にとって都合のよいサイズ
-
- がセクタ」であり、両者の利害の差が出たと考えると納得出来るでしょう。
-
- 例えば、ハードウェアの都合でトラックは154必要ですが、セクタに関して
-
- は、1セクタサイズを小さくしてセクタ数を増やすことも出来ます。
-
- →ちょっとウソっぽいですが、普通はこのような認識で十分です。
-
- →この例もやりすぎるとプロテクトになり、なかには、1トラックに24
- セクタ!なんてものもありました。
-
-
-
-
- ○ FDIMG.Xの使い方
-
- 実際に2HDディスクイメージファイルを生成するプログラムの1つに、FDIMG.X
-
- があります(「電脳倶楽部」の名の付く全てのCD-ROMに掲載されています)。
-
- 元々、「すてきな電脳倶楽部」の起動ディスク用を作成するために用意したプ
-
- ログラムのため、かなり限定した仕様となっております。ご了承おば。
-
- @>FDIMG
- カレントにある、2HDイメージファイル「FDIMG.BIN」を読み込み、ド
- ライブ0に挿入されているFDに書き出します。
- (大抵の場合、FDIMG.BINの中身は電脳倶楽部の起動ディスク)
-
- ----------------------------------------------------------------
-
- @>FDIMG -r [filename.2HD]
- ドライブ0に挿入されているFDを読み込み、2HDイメージファイル
- 「filename.2HD」を生成します。filename.2HD省略時は、「fdimg.bin」
- となります。必ず、HD上で実行してください。
-
- @>FDIMG filename.2HD
- 2HDイメージファイル「filename.2HD」を読み込み、ドライブ0に挿
- 入されているFDに書き出します。
-
-
-
-
- ○最後に雑談
-
- さて、みなさん。FDは、どうやってデジタルデータを記録しているかご存じで
-
- すか? X680x0のFDの場合、MFMという記録方法を採用しているのですが、実は、
-
- 後ろの2文字の"FM"は、あのFMラジオと同じFMの意味があります。つまり、FDの
-
- 円盤に記録されている「本当のデータ」は、実はアナログなのです。???ちょ
-
- っとこんがらがってきましたね。
-
- その仕掛を大雑把に解説すると、全然違う「0を表すアナログ波形」「1を表
-
- すアナログ波形」の2種類が用意され、書き込み時は、入力されたビット列に従
-
- い、それぞれの波形をアナログで記録します。また、読み込み時は、その記録さ
-
- れたアナログ信号を読み取り、「どちらの波形に近いか」を判断し、0か1を出
-
- 力します。
-
- ポイントは、両者の波形は「全然違う」というトコロにあり、あくまでも「0
-
- か1のどちらの波形に近いか」を判断するので、記録されたアナログデータが多
-
- 少変形劣化した程度であれば、問題なく0か1を判定することが出来るのです。
-
- →FD用スマートメディアアダプタという製品がありますが、まさにあのア
- ダプタは、メディア内のデジタルデータを、MFM形式で読み取ることの
- 出来るアナログデータに変換する装置です。FDドライブはそのアダプタ
- が出力したアナログデータを読み込み、0/1を判定し、デジタルデー
- タを出力します。つまり、デジタルメディアに納められたデジタルデー
- タを読み込む為に、アナログ操作を2回行っているのです。
-
-
-
-
- (EOF)
-
-
-